Execution of work units in a heterogeneous computing environment

ABSTRACT

Work units are transparently offloaded from a main processor to offload processing systems for execution. For a particular work unit, a suitable offload processing system is selected to execute the work unit. This includes determining the requirements of the work unit, including, for instance, the hardware and software requirements; matching those requirements against a set of offload processing systems with an arbitrary set of available resources; and determining if a suitable offload processing system is available. If a suitable offload processing system is available, the work unit is scheduled to execute on that offload processing system with no changes to the work unit itself. Otherwise, the work unit may execute on the main processor or wait to be executed on an offload processing system.

BACKGROUND

This invention relates, in general, to heterogeneous computingenvironments, and in particular, to executing work units within suchenvironments.

Work units, such as applications, jobs, computer programs or portionsthereof, are assigned to processors for execution. In multiprocessorcomputing environments that include a plurality of symmetric processors,the assignment of work units to processors is less complex than in thosemultiprocessor computing environments that include asymmetricprocessors. If the processors are symmetrical, and thus, have the samefeatures, then a work unit can execute on any of the processors,assuming there are available resources. However, if the processors areasymmetrical, and thus, do not have the same features, then a particularwork unit may be unable to execute on a particular processor. That is,if a work unit needs a feature that is only present on some of theprocessors, then the work unit will have to execute on a processorhaving that feature.

The assignment of work units to processors in multiprocessor computingenvironments having asymmetric processors can be difficult, tedious, anderror prone. This is because of the expansive amount of information thatneeds to be tracked and considered in properly assigning work units toprocessors for execution.

BRIEF SUMMARY

The shortcomings of the prior art are overcome and additional advantagesare provided through the provision of a computer program product forfacilitating execution of work units in a computing environment. Thecomputer program product comprises a storage medium readable by aprocessing circuit and storing instructions for execution by theprocessing circuit for performing a method. The method includes, forinstance, analyzing, by an analyzer executing on a processor, one ormore resource requirements of a work unit to be executed; determining,based on the analyzing, whether the work unit is to be executed on theprocessor or an offload processing system different from the processor,the offload processing system and processor being heterogeneous of oneanother; obtaining, responsive to the determining indicating the workunit is to be executed on the offload processing system, an indicationof one or more offload processing systems satisfying one or morecriteria for execution of the work unit; checking whether at least oneoffload processing system of the indication of one or more offloadprocessing systems has sufficient resources to execute the work unit;selecting, responsive to the checking specifying at least one offloadprocessing system that has sufficient resources, a selected offloadprocessing system to execute the work unit; and assigning the work unitto be executed on the selected offload processing system for execution,wherein the selected offload processing system has at least one of adifferent operating system, a different architecture or a differentexternal attachment from the processor.

Methods and systems relating to one or more aspects of the presentinvention are also described and claimed herein. Further, servicesrelating to one or more aspects of the present invention are alsodescribed and may be claimed herein.

Additional features and advantages are realized through the techniquesof the present invention. Other embodiments and aspects of the inventionare described in detail herein and are considered a part of the claimedinvention.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

One or more aspects of the present invention are particularly pointedout and distinctly claimed as examples in the claims at the conclusionof the specification. The foregoing and other objects, features, andadvantages of the invention are apparent from the following detaileddescription taken in conjunction with the accompanying drawings inwhich:

FIG. 1A depicts one example of a computing environment to incorporateand use one or more aspects of the present invention;

FIG. 1B depicts one embodiment of further details of a processor of FIG.1A, in accordance with an aspect of the present invention;

FIG. 1C depicts one example of further details of a central processingunit of the processor of FIG. 1B, in accordance with an aspect of thepresent invention;

FIG. 2 depicts one embodiment of the logic to determine whether aparticular work unit is to execute on the processor or an offloadprocessing system, in accordance with an aspect of the presentinvention;

FIG. 3 depicts one example of executing the work unit on an offloadprocessing system, in accordance with an aspect of the presentinvention; and

FIG. 4 depicts one embodiment of a computer program productincorporating one or more aspects of the present invention.

DETAILED DESCRIPTION

In accordance with an aspect of the present invention, a capability isprovided for transparently offloading individual work units from a mainprocessor to a suitable offload processing system for execution. In oneexample, this re-assignment of a work unit includes determining therequirements of the work unit, including, for instance, the hardware andsoftware requirements; matching those requirements against a set ofoffload processing systems with an arbitrary set of available resources;and determining if a suitable offload processing system is available. Ifa suitable offload processing system is available, the work unit isassigned to execute on that offload processing system with no changes tothe work unit itself. Otherwise, the work unit may execute on the mainprocessor or wait to be executed on an offload processing system.

One embodiment of a computing environment to incorporate and use one ormore aspects of the present invention is described with reference toFIG. 1A. In this particular example, a computing environment 100includes one or more main processors 102 coupled to one or more offloadprocessing systems 104. Main processor 102 is, in one example, based onthe z/Architecture® offered by International Business MachinesCorporation. For instance, such a processor may be the IBM®z/Enterprise™ 196 (z196) server offered by International BusinessMachines Corporation or other servers based on the z/Architecture® (orother architecture). z/Architecture® and IBM® are registered trademarksof International Business Machines Corporation, Armonk, N.Y. Other namesused herein may be registered trademarks, trademarks or product names ofInternational Business Machines Corporation or other companies.

An offload processing system may include one processor and its externalattachments, if any (e.g., storage (e.g., DASD, tape, etc.) or otherattachments), or a system having a plurality of processors and itsattachments, if any (e.g., a mainframe computer with tightly coupledprocessors or other types of systems). In this example, one or more ofthe offload processing systems are heterogeneous from processor 102. Anoffload processing system 104 that is heterogeneous from processor 102has, for instance, a different operating system, a differentarchitecture, and/or one or more different external attachments thanprocessor 102. As examples, the operating system may be AIX® or Linux(instead of, for instance, z/OS® executed on main processor 102), and/orthe architecture may be PowerPC® or Intel®. As a further example, theoffload processing system may have a certain tape drive or otherexternal feature not included with the main processor. Many otherexamples exist. The offload processing system is heterogeneous from themain processor if, for instance, it has at least one feature differentfrom the main processor. The offload processing systems may be differentfrom one another or similar. In one example, there are many offloadprocessing systems, some of which are homogonous to one another andothers of which are different. AIX®, z/OS® and PowerPC® are registeredtrademarks of International Business Machines Corporation, Armonk, N.Y.;and Intel® is a registered trademark of Intel Corporation.

In this particular example, the offload processing systems are looselycoupled to the main processor. That is, the offload processing systemsmay share a communications network (e.g., network connection, memory, ordirect access storage as a communications medium), but, otherwise, thereis an absence of sharing of resources (e.g., it is not necessary forthem to share additional memory or other peripheral devices with themain processor). The trade-off between sharing additional resources ornot is the increase in cost and complexity required to permit sharingversus the reduced performance or offload capability if requiredresources are not available. For example, sharing Network AttachedStorage (NAS) is relatively cheap and multiple offload processingsystems and main processors could share access. Similarly, networkconnections are relatively easy and not costly. However, access tolegacy tape drives or DASD is more costly or, given certainarchitectures, cost prohibitive.

Further details regarding main processor 102 are described withreference to FIG. 1B. In one example, processor 102 includes at leastone central processing unit 110, memory 112 and one or more input/outputdevices and/or interfaces 114 coupled to one another via one or morebuses 116. Executing within central processing unit 110 is, forinstance, an operating system 120, as depicted in FIG. 1C. In oneexample, the operating system is the z/OS® operating system offered byInternational Business Machines Corporation; however, in other examples,other operating systems are used. As one example, the operating systemexecutes a plurality of programs, such as a job control language (JCL)analyzer 130 and a step analyzer 132.

In one example, JCL analyzer 130 and step analyzer 132 are part of a jobentry subsystem (JES) of z/OS®. JES is the component of the operatingsystem that handles receiving work units into the operating system,scheduling them for processing, and controlling their output processing.In other embodiments, the JCL analyzer and/or step analyzer are not partof JES. Use of the JCL analyzer and the step analyzer are described infurther detail below.

In accordance with an aspect of the present invention, a determinationis made as to whether a particular work unit is to be executed on themain processor or offloaded to an offload processing system to beexecuted thereon. In one particular example, the work unit is part of anapplication that includes one or more work units. The application beginsexecuting on processor 102, and for each work unit (or a subsetthereof), a determination is made as to whether the work unit is to beexecuted on the main processor (i.e., the processor on which theapplication or work unit was initiated) or an offload processing system.This decision process is further described with reference to FIG. 2.

Referring to FIG. 2, in one example, this logic is performed by ananalyzer, such as, for instance, JCL analyzer 130 (FIG. 1C). (In otherembodiments, the analyzer may be other than the JCL analyzer.) Input tothe analyzer is the Job Control Language (JCL) 201 for the work unitbeing processed. The analyzer reads the JCL for the work unit and beginsinterpreting the same, STEP 200. For instance, it analyzes the resourcerequirements of the work unit and obtains the relevant resource data,STEP 202. That is, it determines based on the JCL what resources (e.g.,amount of CPU time, amount of memory, files, kinds of programs itexecutes, required hardware, external attachments, etc.) the work unitneeds to execute, and obtains any necessary programs, files, data, etc.

Thereafter, a determination is made as to whether there are one or moreoffload processing systems that meet specified criteria for execution ofthe work unit. That is, are there one or more offload processing systemsthat have the hardware and software requirements needed for the workunit and meet other specified criteria for the work unit, INQUIRY 204.Input to this decision is resource information 203, including, forinstance, CPU times, region sizes, programs, files, etc. A work unit maybe ineligible to offload if, for instance:

-   -   A needed licensed product is not available in an offload        processing system;    -   The region request is greater than that supported by an offload        processing system;    -   CPU time requested is larger than supported by an offload        processing system;    -   Resources required are unavailable in an offload server (e.g.,        tapes; DASD; optical devices; etc.; other hardware/system        resources found in the JCL scan);    -   Program defined as not eligible by the customer through        configuration;    -   Program previously determined as incompatible with an offload        processing system—in the ‘ineligible program list’ database;        and/or    -   Customer coded control statement indicates the entire        application or work unit is ineligible for offload processing.

If the criteria cannot be met, then in this example, the work unit isnot scheduled for offload processing, STEP 206, and standard processingis continued, STEP 216. For example, the work unit is scheduled toexecute on the main processor. In a further example, if the criteriacannot be met, a determination is made as to whether the work unit isprepared to wait for an offload processing system that can meet thecriteria or for the criteria to change (e.g., program or work unit nowdefined to be eligible for offloading). If so, INQUIRY 204 is repeatedafter a defined delay. Otherwise, standard processing is performed, inwhich the work unit is scheduled to execute on the main processor.

Returning to INQUIRY 204, if there are one or more offload processingsystems that meet the specified criteria, then a determination is madeas to whether one or more of those offload processing systems have therequired resources currently available for executing the work unit,INQUIRY 208. If not, then, in one example, a determination is made as towhether the work unit is prepared to wait for an offload processingsystem, STEP 210. If the work unit is not prepared to wait, then thework unit is not scheduled for offload, STEP 206, and processingcontinues with STEP 216, in which in this example, the work unit isscheduled to execute on the main processor. Otherwise, INQUIRY 208 isrepeated after a defined delay. In one example, it may be repeated anumber of times depending on policy.

Returning to INQUIRY 208, if there are one or more offload processingsystems that meet the criteria and currently have available resources(including hardware, software and/or external attachment resources),then one of the offload processing systems is selected for executing thework unit, STEP 212. If there are more than one offload processingsystems available that have the required resources, then a technique isused to select one of the processing systems. For example, a round robinapproach may be used or a priority may be assigned to each offloadprocessing system and the selection is based on priority. Many othertechniques are also available. In one particular example, a best fittechnique is used in which the offload processing system that best fitsthe work unit based on a defined formula is selected. One specificexample of this is provided below.

This specific example is intended to define what resources and servicesare required to validate that a particular work unit can be offloadedand to which specific offload processing system (OFL). The work unitrequirements together with the available resources in one or more OFLs,when merged, determine whether a work unit can run and where. Onespecific assumption in this example is that only one OFL is used inservicing a work unit. (In other examples, this assumption is not made.)

A work unit employs certain services and offload processing systemsprovide a (possibly asymmetric) set of services. Matching these in themost cost effective way is a goal, in this example. There are otherpotential services or requirements that are imposed by customers—forexample, a job is to run within a specific time window—that are notincluded in this example, but may be included in others. The dataincluded here is from job control information (e.g., JCL)—i.e., I/Oprofile, the invoked program's characteristics and known features of thesystem it runs on.

Table 1 below shows examples of scheduling resources, whether they aresingular or multiple, offload processing systems (OFLs) matching theresources and relevant comments and constraints.

TABLE 1 Work Units require, OFLs provide the following resources: OFLSupported Resource Quantity Host Notes Quantity OFL Notes CPU ResourceSingle value Maximum Has a speed Often much amount constant differentspeed permitted from the host Memory Single Value Maximum Single valuefor Maximum amount max amount may be much less than host Types ofMultiple Any number of Some - 3380, Asymmetric DASD, i.e., multipletypes 3390, SCSI, configuration 3390 . . . NAS from host, some may besupported, others not Types of tape A few Any number of 3420, 3480,Asymmetric or multiple types 3490, VTS non-existent, same as aboveOther, multi- A very few or Unusual Network Very highly use (i.e.,shared none request, usually components, unusual request among systems)one of a kind SCSI devices, hardware network print... Single use A veryfew or Unusual CD, DVD, Unusual hardware none request, usually cyptorequest, usually one of a kind one of a kind Well defined, Any number;Based on Some subset of existing files initially hardware the hostunknown (but configuration system's knowable from available input) Welldefined Any number Based on Some subset of new files (on unknown andhardware the host specific unknowable configuration system's volumes)size available Temporary files List Any number Known max Local or sharedunknown and volumes/space with host unknowable available sizeSysin/sysout List Any number Provided files unknown and through agentsunknowable on both systems size System List Unknown but Subset, A subsetof the (supervisor) knowable if possibly down host's - is to be servicesanalyzed (e.g., level well defined manually) Access methods Sam, Pam,Mostly Sam, pam, Can be PDSE, VSAM, unknown until pdse, vsam, providedeither SNA, TCP, OPENed excp locally or EXCP through agents Well definedLarge potential Known types Large list May or may not programs (somelist by library, but be available by being licensed, dynamically licenseor host others not) changeable access Library Larger list Known typesLarger list May or may not programs (some by library, but be availableby being licensed) dynamically license or host changeable access JobSome Conditional N/A Provided management JCL, etc. through agentsservices Customer input A few - i.e., Through some A few Input to neveroffload, means, defining technique always offload, where to/not tothrough agent specific run this services application or work unit;request services available only through offload - i.e., DB/2, CICS, TSO,ORACLE, Windows apps Local, Some For example - specialized DB/2, CICS,services TSO, ORACLE, Windows apps ‘native’ on the offload server

There may be a simple rule describing what to do if a processing systemdoes or does not have the equivalent resource; or there may be morecomplex rules governing them. Also, the importance of some rules ishigher than others, and lastly some offload resources are more valuableso need to be scheduled with that in mind; that is, in an order ofpreference. Examples are depicted in Table 2.

Table 2 describes rules for examples that may be used:

Comments/ Resource Rule exceptions Override options CPU resourceNormalized to i.e., can't run >24 Can override hosts, must fit in hours,etc. configured value Memory <=8 GB Unless a change is No - System limitmade for it Types of DASD, Is to be a subset The access Maybe - i.e.,customer i.e., 3390 . . . methods may not does excp and knows it workwith will work unknown hardware types Types of tape Is to be a subsetThe access Maybe - i.e., customer methods may not does excp and knows itwork with will work unknown hardware types Other, multi-use Is to be asubset The access Maybe - i.e., customer (i.e., shared among methods maynot does excp and knows it systems) hardware work with will work unknownhardware types Single use Is to be a subset The access Maybe - i.e.,customer hardware methods may not does excp and knows it work with willwork unknown hardware types Temporary files Local or shared Customer Yesdefinition Sysin/sysout files All supported Large volume can No hitperformance System If known, is to Assume yes Yes (compatible matchsupervisor) services Well defined Is to be supported Data base lookup;Yes programs (some if found, its being licensed, requirements are toothers not) match; if not found assume yes Library programs Is to besupported Data base lookup; Yes (some being if found, its licensed)requirements are to match; if not found assume yes Job management N/Aservices Customer input Is to be supported Reject only if conflicts with“no” override resources Local, specialized Honor, if No - if notavailable services available; look for this first

Decision Making Process:

In this example, there is an implied order in resource matching, fromthe most restrictive (or most expensive) to the least. It is ‘possible’that there could be an override to this. The idea is to strike out OFLsthat cannot meet the requirements so that the OFL with the leastavailable resources meeting the complete request is chosen. If there arenone, the work unit is not offloadable. The implied order for resourceallocation is, in one example:

Resource Rule Order CPU resource Low - assume all OFLs Note that thismay change have the same CPU rating over time and thus so would theorder Memory Very low - all OFLs have “adequate” memory DASD volumes andother, Medium-high If the device type or volume multi-use (i.e., sharedrequired is not available on among systems hardware) the OFL, it iseither not offloadable or means high overhead to service Tape devices &single use High Same as above hardware Temporary files Low Performancewould be better if local to OFL but not critical Sysin/sysout files N/AInitially, all OFLs are to have an interface to the spooler System(compatible N/A Initially, specific services supervisor) servicesrequired is unknown Access methods Highest All access methods used bythe work unit are to be supported by the OFL Customer input High-highestAs it helps to select an OFL Local, specialized services High Dependingon the number of OFL's supporting the service or device, its prioritycan decrease

With the Above:

-   -   1. Applying the highest constraint rules first eliminates the        offload processing systems that do not have the limited required        resources.    -   2. Of the ones left, the rules are applied to the next highest        and so on until what is left is all the offload processing        systems that have all the resources required, and those that can        through agent support (such as access to some files) to provide        the services.    -   3. If no OFLs are available, the work unit is to be rejected.    -   4. At this point, a determination is made as to which offload        processing systems are available to run the work unit, rejecting        those already being used.    -   5. If no OFLs are available, based on configuration settings or        job control, the work unit is either rejected or is made to wait        for a while until an OFL becomes available. Note that this        ‘wait’ is to be timed, in one example, and the work unit is        eventually rejected if too many waits or retries have occurred.    -   6. If multiple offload processing systems are still available,        the OFLs with the highest cost resources not used by the work        unit are rejected, if any. For example, if the work unit does        not use a cryptographic facility that is available on an OFL but        not others, that OFL is removed. Similarly, if an OFL has access        to 10 channels of DASD, but there are others with 4 and the work        unit is satisfied by the 4, the 10 channel OFL is removed. In        one example, the offload processing system with exactly the        right set of resources, and no more, is to be used to execute a        work unit. One way to select this offload processing system is        to assign a relative value or ‘cost’ for each resource—based on        its scarcity, acquisition/ownership cost and sharing capability.        The sum of ‘costs’ by an offload processing system provides a        relative measure of all the resources any one offload processing        system contains versus others, and can be used to select the        ‘minimum’ cost processing system capable of meeting the resource        requirements of a unit of work.    -   7. Last, OFLs with the most costly I/O profile are eliminated if        there are differences in I/O configuration amongst OFLs. These        would be those where there is no direct access to DASD volumes        required by a step and ‘networked’ or slower access to the host.    -   8. If multiple OFLs still meet the criteria, the first available        is selected. In this example, this is now the selected offload        processing system based on a best fit criteria.

Continuing with STEP 212 of FIG. 2, subsequent to selecting the offloadprocessing system to execute the work unit, the job control language ismodified to execute the work unit on the selected offload processingsystem, STEP 214. This modification is transparent to the user, andincludes, for example, indicating in the JCL the selected offloadprocessing system.

Thereafter, standard processing continues, STEP 216, which in this caseincludes assigning the work unit to execute on the selected offloadprocessing system.

Some time after the work unit is assigned for execution (e.g., seconds,minutes, hours, days, etc.), execution of the work unit is initiated andcertain processing is performed, as described with reference to FIG. 3.In one example, it is the step analyzer (FIG. 1C) that controlsexecution of the work unit.

The resource data (e.g., the list of known resources required to executethis work unit) is obtained by the step analyzer (or another analyzer inanother example) and sent to the selected offload processing system,STEP 300. In one example, the resource data is sent to the offloadprocessing system via an offload support agent which interfaces with theoffload processing system, STEP 302. A work unit marked as eligible foroffloading has its original name and requested region size saved andreplaced by the name and region requirements of the offload supportagent. In one example, these changes are made without altering the JCLlisting.

The offload support agent validates that the work unit can still beoffloaded, captures work unit information (e.g., the list of requiredresources), and forwards the package to the offload processing system.The offload support agent executes on the main processor complex andprovides access to services on the main system (e.g., only on the mainsystem), such as spooling services and local DASD. The offload supportagent is a problem state program executing on the main processor with nospecial privileges. It analyzes the resources needed for the work unit,requests an offload processing system based on this and passes theresource data to the offload processing system. It then processesservice requests from the running work unit using, for instance, localresources 307. For instance, in a mainframe environment having a mainprocessor (e.g., mainframe processor) and offload processing system, thework unit may be executed on an offload processing system, but certainmainframe services are desired as part of the execution. These servicesare requested by the offload processing system and performed by theoffload support agent that has access to the resources (307) needed forthe service.

In one example, the offload support agent:

-   -   Initializes, then locates the selected offload processing system        and connects to it.    -   Obtains configuration information for this instance of offload        processing system—its unique id.    -   Requests the selected offload processing system to execute the        work unit.        -   If the selected offload processing system or another offload            processing system is not available, either passes the work            unit to main processor (e.g., z/OS®) or waits, based on            configuration.            -   It determines if the work unit is still offloadable to                the selected offload processing system (i.e., are the                resources still available, has anything changed                indicating that it should not be offloaded to the                selected offload processing system; etc.). If the work                unit is not offloadable to the selected offload                processing system, then control is passed to the main                processor (e.g., to the application invoking this work                unit); or in another example, the offload support agent                may select another offload processing system using the                technique described above, assuming the work unit is                still configured for offloading.    -   Passes the work unit information to the offload processing        system, then provides execution support services.        -   Obtains execution environment information and sends to            offload processing system;        -   Waits for execution completion or offload processing system            requests, such as:            -   OPEN, I/O Requests, CLOSE for spooled and unsupported                datasets. Returns status and control information to                offload processing system.            -   Dynamic allocation and deallocation as necessary.            -   Catalog management, and Generation Data Group (GDC)                support.            -   Program management services (e.g., locate load modules                i.e., link, load, attach, xctl).            -   Error processing/recovery and server communication.            -   Operator/log messages.        -   At completion, uses the offload processing system-returned            condition/completion code and terminates with it.

Responsive to the offload support agent providing the work unit andrelated information to the offload processing system, the offloadprocessing system obtains the resource list (e.g., the list obtained inSTEP 300), fetches the requested program 301, and begins its execution,STEP 304. It has access to shared resources 309 on the main system(e.g., an IBM® system), as well as offload server resources 311.

The offload processing system processes the work unit as it would anyother work unit, including performing its own internal (i.e., operatingsystem) scheduling, etc. It returns a result and/or condition code tothe offload support agent, which provides this information to the mainprocessor.

Described above is a system-wide, generic technique, integrated with theoperating system, for offloading work units to offload processingsystems. The technique encompasses, for instance, all jobs and workunits that are run by the operating system. In one example, in which theoperating system is z/OS®, the technique includes offloading DB/2®,CICS®, batch, TSO and other work units, based on their specific resourcerequirements. Manual scheduling is not needed, and neither is managementby subsystems, like DB/2® and CICS®. DB/2® and CICS® are registeredtrademarks of International Business Machines Corporation, Armonk, N.Y.

In an environment with asymmetric multiple processors containing anasymmetric set of hardware and/or software, in one aspect of the presentinvention, a determination is made as to which is the best processingsystem to use to execute a specific work unit. A technique is providedfor obtaining the resource requirements of a work unit and maintaining acurrent list of available offload processing systems with theiravailable resources. It then computes the best fit offload processingsystem to use for this work unit, based on general and specific inputs,or rejects the work unit as an offload candidate, thus executing it onthe main system.

In one example, the job control language statements for each work unitis evaluated for: specific exclusion/inclusion in offload evaluation;resource requests that prohibit offloading a work unit; resourcerequests that target a set of or individual offload processing systems;and/or programs or files that prohibit offload due to license or otherconstraints. If all the criteria for offload are met, then, in oneexample, when a work unit is scheduled for execution, a determination ismade as to whether an eligible offload processing system is available.If so, it is sent to the offload processing system for execution.Otherwise, the work unit is either re-queued for processing on the mainprocessor or it waits for an offload processing system.

This general technique for analyzing the execution requirements of workunits, matching those requirements to resources of specific function orspecialized processors, then once matched, offloading work to theseprocessing systems, obtains multiple economies, including, for instance:

-   -   Execution on potentially less costly or faster processors;    -   Provides enhanced function unavailable to the main system;    -   Additional parallelism of execution by using additional        processors; and    -   Potentially faster throughput by dedicating work to specific        processors.

By offloading these work units, it is also possible to decrease licensecosts by:

-   -   Reducing the total billable MIP requirements on the offloaded        system;    -   Reducing license costs for software no longer needed on the main        system or on all hardware platforms;    -   Reducing software license fees for software products charged        based on size of CPU; and    -   Reducing software costs by licensing software of less costly        operating systems or processors.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system”.Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readable signalmedium may include a propagated data signal with computer readableprogram code embodied therein, for example, in baseband or as part of acarrier wave. Such a propagated signal may take any of a variety offorms, including, but not limited to, electro-magnetic, optical or anysuitable combination thereof. A computer readable signal medium may beany computer readable medium that is not a computer readable storagemedium and that can communicate, propagate, or transport a program foruse by or in connection with an instruction execution system, apparatusor device.

A computer readable storage medium may be, for example, but not limitedto, an electronic, magnetic, optical, electromagnetic, infrared orsemiconductor system, apparatus, or device, or any suitable combinationof the foregoing. More specific examples (a non-exhaustive list) of thecomputer readable storage medium include the following: an electricalconnection having one or more wires, a portable computer diskette, ahard disk, a random access memory (RAM), a read-only memory (ROM), anerasable programmable read-only memory (EPROM or Flash memory), anoptical fiber, a portable compact disc read-only memory (CD-ROM), anoptical storage device, a magnetic storage device, or any suitablecombination of the foregoing. In the context of this document, acomputer readable storage medium may be any tangible medium that cancontain or store a program for use by or in connection with aninstruction execution system, apparatus, or device.

Referring now to FIG. 4, in one example, a computer program product 400includes, for instance, one or more non-transitory computer readablestorage media 402 to store computer readable program code means or logic404 thereon to provide and facilitate one or more aspects of the presentinvention.

Program code embodied on a computer readable medium may be transmittedusing an appropriate medium, including, but not limited to, wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programminglanguage, such as JAVA™, Smalltalk, C++ or the like, and conventionalprocedural programming languages, such as the “C” programming language,assembler or similar programming languages. The program code may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider).

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

In addition to the above, one or more aspects of the present inventionmay be provided, offered, deployed, managed, serviced, etc. by a serviceprovider who offers management of customer environments. For instance,the service provider can create, maintain, support, etc. computer codeand/or a computer infrastructure that performs one or more aspects ofthe present invention for one or more customers. In return, the serviceprovider may receive payment from the customer under a subscriptionand/or fee agreement, as examples. Additionally or alternatively, theservice provider may receive payment from the sale of advertisingcontent to one or more third parties.

In one aspect of the present invention, an application may be deployedfor performing one or more aspects of the present invention. As oneexample, the deploying of an application comprises providing computerinfrastructure operable to perform one or more aspects of the presentinvention.

As a further aspect of the present invention, a computing infrastructuremay be deployed comprising integrating computer readable code into acomputing system, in which the code in combination with the computingsystem is capable of performing one or more aspects of the presentinvention.

As yet a further aspect of the present invention, a process forintegrating computing infrastructure comprising integrating computerreadable code into a computer system may be provided. The computersystem comprises a computer readable medium, in which the computermedium comprises one or more aspects of the present invention. The codein combination with the computer system is capable of performing one ormore aspects of the present invention.

Although various embodiments are described above, these are onlyexamples. For example, computing environments of other architectures canincorporate and use one more aspects of the present invention.Additionally, other types of offload processing systems or offloadsupport agents may be used. Further, other criteria, tests and/or rulesmay be used to determine if a particular work unit is to be offloaded,and if so, to which offload processing system.

Further, other types of computing environments can benefit from one ormore aspects of the present invention. As an example, an environment mayinclude an emulator (e.g., software or other emulation mechanisms), inwhich a particular architecture (including, for instance, instructionexecution, architected functions, such as address translation, andarchitected registers) or a subset thereof is emulated (e.g., on anative computer system having a processor and memory). In such anenvironment, one or more emulation functions of the emulator canimplement one or more aspects of the present invention, even though acomputer executing the emulator may have a different architecture thanthe capabilities being emulated. As one example, in emulation mode, thespecific instruction or operation being emulated is decoded, and anappropriate emulation function is built to implement the individualinstruction or operation.

In an emulation environment, a host computer includes, for instance, amemory to store instructions and data; an instruction fetch unit tofetch instructions from memory and to optionally, provide localbuffering for the fetched instruction; an instruction decode unit toreceive the fetched instructions and to determine the type ofinstructions that have been fetched; and an instruction execution unitto execute the instructions. Execution may include loading data into aregister from memory; storing data back to memory from a register; orperforming some type of arithmetic or logical operation, as determinedby the decode unit. In one example, each unit is implemented insoftware. For instance, the operations being performed by the units areimplemented as one or more subroutines within emulator software.

Further, a data processing system suitable for storing and/or executingprogram code is usable that includes at least one processor coupleddirectly or indirectly to memory elements through a system bus. Thememory elements include, for instance, local memory employed duringactual execution of the program code, bulk storage, and cache memorywhich provide temporary storage of at least some program code in orderto reduce the number of times code must be retrieved from bulk storageduring execution.

Input/Output or I/O devices (including, but not limited to, keyboards,displays, pointing devices, DASD, tape, CDs, DVDs, thumb drives andother memory media, etc.) can be coupled to the system either directlyor through intervening I/O controllers. Network adapters may also becoupled to the system to enable the data processing system to becomecoupled to other data processing systems or remote printers or storagedevices through intervening private or public networks. Modems, cablemodems, and Ethernet cards are just a few of the available types ofnetwork adapters.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising”, when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below, if any, areintended to include any structure, material, or act for performing thefunction in combination with other claimed elements as specificallyclaimed. The description of the present invention has been presented forpurposes of illustration and description, but is not intended to beexhaustive or limited to the invention in the form disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The embodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiment with various modifications as are suited to theparticular use contemplated.

What is claimed is:
 1. A computer program product for facilitatingexecution of work units in a computing environment, said computerprogram product comprising: a non-transitory computer readable storagemedium readable by a processing circuit and storing instructions forexecution by the processing circuit for performing a method comprising:analyzing, by an analyzer executing on a processor, one or more resourcerequirements of a work unit to be executed; determining, based on theanalyzing, whether the work unit is to be executed on the processor oran offload processing system different from the processor, the offloadprocessing system and processor being heterogeneous of one another;obtaining, based on the determining indicating the work unit is to beexecuted on the offload processing system, an indication of one or moreoffload processing systems satisfying one or more criteria for executionof the work unit; checking whether at least one offload processingsystem of the indication of one or more offload processing systems hassufficient resources to execute the work unit; selecting, based on thechecking specifying at least one offload processing system that hassufficient resources, a selected offload processing system to executethe work unit; and assigning the work unit to be executed on theselected offload processing system for execution, wherein the selectedoffload processing system has at least one of a different operatingsystem, a different architecture or a different external attachment fromthe processor.
 2. The computer program product of claim 1, wherein thechecking specifies a plurality of offload processing systems havingsufficient resources, and wherein the selecting chooses the offloadprocessing system based on a best fit criteria.
 3. The computer programproduct of claim 2, wherein the selecting based on the best fit criteriacomprises: determining which one or more offload processing systems ofthe plurality of offload processing systems having sufficient resourceshave a highest cost of additional resources not needed by the work unit;and removing those one or more offload processing systems fromconsideration in the selecting.
 4. The computer program product of claim1, wherein the work unit is part of an application to be executed, theapplication having a plurality of work units, and wherein the methodfurther comprises executing one work unit of the application on theselected offload processing system and another work unit of theapplication on the processor.
 5. The computer program product of claim1, wherein the processor and the offload processing system are looselycoupled, wherein there is a communications connection between them butotherwise an absence of sharing of resources.
 6. The computer programproduct of claim 1, wherein the method further comprises modifying,based on the selecting, control language of the work unit to enable thework unit to execute on the selected offload processing system.
 7. Thecomputer program product of claim 1, wherein the method furthercomprises initiating execution of the work unit, the initiatingcomprising: determining whether the work unit is to execute on theselected offload processing system; and based on the determiningindicating the work unit is to execute on the selected offloadprocessing system, providing the work unit to the selected offloadprocessing system.
 8. The computer program product of claim 7, whereinthe providing employs an offload support agent, the offload supportagent interfacing between the processor and the selected offloadprocessing system.
 9. The computer program product of claim 1, whereinthe method further comprises: based on the checking indicating that nooffload processing system of the indication of one or more offloadprocessing systems has sufficient resources to execute the work unit,waiting a predefined amount of time; and repeating the checking, basedon waiting the predefined amount of time.
 10. A computer system forfacilitating execution of work units in a computing environment, saidcomputer system comprising: a memory; and a processor in communicationswith the memory, wherein the computer system is configured to perform amethod, said method comprising: analyzing, by an analyzer executing on aprocessor, one or more resource requirements of a work unit to beexecuted; determining, based on the analyzing, whether the work unit isto be executed on the processor or an offload processing systemdifferent from the processor, the offload processing system andprocessor being heterogeneous of one another; obtaining, based on thedetermining indicating the work unit is to be executed on the offloadprocessing system, an indication of one or more offload processingsystems satisfying one or more criteria for execution of the work unit;checking whether at least one offload processing system of theindication of one or more offload processing systems has sufficientresources to execute the work unit; selecting, based on the checkingspecifying at least one offload processing system that has sufficientresources, a selected offload processing system to execute the workunit; and assigning the work unit to be executed on the selected offloadprocessing system for execution, wherein the selected offload processingsystem has at least one of a different operating system, a differentarchitecture or a different external attachment from the processor. 11.The computer system of claim 10, wherein the checking specifies aplurality of offload processing systems having sufficient resources, andwherein the selecting chooses the offload processing system based on abest fit criteria.
 12. The computer system of claim 11, wherein theselecting based on the best fit criteria comprises: determining whichone or more offload processing systems of the plurality of offloadprocessing systems having sufficient resources have a highest cost ofadditional resources not needed by the work unit; and removing those oneor more offload processing systems from consideration in the selecting.13. The computer system of claim 10, wherein the work unit is part of anapplication to be executed, the application having a plurality of workunits, and wherein the method further comprises executing one work unitof the application on the selected offload processing system and anotherwork unit of the application on the processor.
 14. The computer systemof claim 10, wherein the method further comprises initiating executionof the work unit, the initiating comprising: determining whether thework unit is to execute on the selected offload processing system; andbased on the determining indicating the work unit is to execute on theselected offload processing system, providing the work unit to theselected offload processing system.
 15. The computer system of claim 14,wherein the providing employs an offload support agent, the offloadsupport agent interfacing between the processor and the selected offloadprocessing system.
 16. The computer system of claim 10, wherein themethod further comprises: based on the checking indicating that nooffload processing system of the indication of one or more offloadprocessing systems has sufficient resources to execute the work unit,waiting a predefined amount of time; and repeating the checking, basedon waiting the predefined amount of time.
 17. A method of facilitatingexecution of work units in a computing environment, said methodcomprising: analyzing, by an analyzer executing on a processor, one ormore resource requirements of a work unit to be executed; determining,based on the analyzing, whether the work unit is to be executed on theprocessor or an offload processing system different from the processor,the offload processing system and processor being heterogeneous of oneanother; obtaining, based on the determining indicating the work unit isto be executed on the offload processing system, an indication of one ormore offload processing systems satisfying one or more criteria forexecution of the work unit; checking whether at least one offloadprocessing system of the indication of one or more offload processingsystems has sufficient resources to execute the work unit; selecting,based on the checking specifying at least one offload processing systemthat has sufficient resources, a selected offload processing system toexecute the work unit; and assigning the work unit to be executed on theselected offload processing system for execution, wherein the selectedoffload processing system has at least one of a different operatingsystem, a different architecture or a different external attachment fromthe processor.
 18. The method of claim 17, wherein the checkingspecifies a plurality of offload processing systems having sufficientresources, and wherein the selecting chooses the offload processingsystem based on a best fit criteria.
 19. The method of claim 18, whereinthe selecting based on the best fit criteria comprises: determiningwhich one or more offload processing systems of the plurality of offloadprocessing systems having sufficient resources have a highest cost ofadditional resources not needed by the work unit; and removing those oneor more offload processing systems from consideration in the selecting.20. The method of claim 17, further comprising initiating execution ofthe work unit, the initiating comprising: determining whether the workunit is to execute on the selected offload processing system; and basedon the determining indicating the work unit is to execute on theselected offload processing system, providing the work unit to theselected offload processing system.